home *** CD-ROM | disk | FTP | other *** search
/ SuperHack / SuperHack CD.bin / CODING / GRAPHICS / VOXRAY.ZIP / RAYDEAL.TXT < prev    next >
Encoding:
Text File  |  1996-03-21  |  16.8 KB  |  428 lines

  1. The Raydeal Game Faq v1.03
  2. by Matt Howard, with irritating comments by Gene Buckle.
  3.  
  4. TOC
  5.  
  6. Section 1 The Game
  7.  1.  What is the Raydeal game?
  8.  2.  What still needs to be done to the game?
  9.  3.  How will the game be marketed?
  10.  4.  Who's involved in the project already?
  11.  5.  How do I get involed? What's in it for me?
  12.  6.  Misc.
  13.  7.  The Future(!?)
  14.  
  15. Section 2 The Code
  16.  1.  Programming Overview And Notes
  17.  2.  File Structure
  18.  3.  Known Bugs
  19.  4.  Things to be fixed with the engine
  20.  
  21. Section 3 The History
  22.  1. A brief history of raydeal
  23.  2. A brief history of the FAQ
  24.  
  25. Section 1: The Game
  26. ---------------------------------
  27.  
  28. 1.1  What is the Raydeal game?
  29.  
  30. The Raydeal game is a game based on the recently released Raydeal
  31. game engine, also known as the Nottingham engine. The idea is to
  32. create a much more stategic and expanded Deathmatch. In other
  33. words, people will now not only be in charge of their own survival,
  34. but will also control bases, defenses, etc. Teams of people will be
  35. pitted against eachother, in charge of capturing their oppenents
  36. base (or in a larger game, multiple bases). Hopefully, the end
  37. result will be a ten on ten all out strategic war, all in real-time
  38. 3-d. It'll probably take a lot longer than a normal deathmatch.
  39. Environments will be mostly outdoor forests and the like, while
  40. base will be interior DOOM like buildings. Obviously levels will
  41. all be a lot more complex in the real game.
  42.  
  43. The game will be developed to run across the internet. Various
  44. computers will link into a server for a game.
  45.  
  46. It may be developed on Win95, but a DOS version will probably be
  47. availible first.
  48.  
  49. -------------------------------------------------------------------
  50.  
  51. 1.2 What still needs to be done to the game?
  52.  
  53. Debugging.  The engine needs to be completely debugged before we
  54. get wildadding new features -TGOM[1]
  55.  
  56.  
  57. Networking- I think this game should definitely be an
  58. Internet game- it should also be playable over IPX networks.
  59.  
  60. Windows Port- This really ought to be finished. Coding networking
  61. in Windows would be a lot easier, as it could just be a Winsock
  62. app.
  63.  
  64. Level Editor plus Levels- A friend of mine wrote an editor a while
  65. ago but it sucked (took me about three hours of hand editing to get
  66. his level to work). A rewrite might be neccesary. We also thought
  67. about random level generation, but that might be really impossible.
  68. I think and editor is easier.
  69.  
  70. A lot of object coding- we need to setup how more defenses work, as
  71. well as a system for placing them on the map.
  72.  
  73. Sound- just need to add support for other cards, plus some original
  74. tunes written by other people
  75.  
  76. Graphics- we need better textures
  77. -----------------------------------------------------------------
  78. -----
  79.  
  80. 1.3 How will the game be marketed?
  81.  
  82. We have no commercial publisher. We do not want one. The game will
  83. be marketed freeware.
  84.  
  85. This last list sounds like a lot, but consider that if we're not up
  86. to coding these, we can move on, since it doesn't have a commercial
  87. publisher.
  88.  
  89. I think it'd be a good idea to get an early version availible as
  90. soon as possible to build some hype.
  91. -----------------------------------------------------------------
  92. ---------
  93.  
  94. 1.4 Who is involved with the game already?
  95.  
  96. Currently, the de facto project leaders are myself (Matt Howard)
  97. and Gene Buckle. This is only because, for the moment, we're the
  98. ones doing the most work. Here is the complete list of people
  99. involved:
  100.  
  101. Matt Howard (weirdo@primenet.com)  Project creator & engine coder
  102.  
  103. Gene Buckle (u-gwb@nta.com) Head communications coder and the man
  104. with the plan. (NOT! I'm the [1]Token Grouchy Old Man)(Sure Gene.
  105. Oh, and the big vision at the bottom was written by, who?)
  106.  
  107. Brian Cowan (cowanb@limestone.kosone.com) Enthusiastic coder ready
  108. to do anything
  109.  
  110. Dave Cornish (dmc@nwrain.net) The head artist so far
  111.  
  112. Andrew Warnick (awarnick@wwdc.com) Willing to code net stuff and
  113. also editor
  114.  
  115. Robert Parenton <parenton@airmail.net> Artist/Coder
  116.  
  117. William Forsche <wforsche@athenet.net> Artist / Model maker
  118.  
  119. Matt Douglass (mdouglass@earthlink.net) Code Optimizer?
  120.  
  121. Josh Glazer (VBunny@aol.com) ????
  122. -----------------------------------------------------------------
  123. -------------
  124.  
  125.  
  126. 1.5 How do I get involved? What's in it for me?
  127.  
  128. To become a coder, artist, musician, etc, all you have to do is
  129. mail me. Tell me what parts of the game you would like to work on,
  130. and I will get you in touch with the right people.
  131.  
  132. What do you get out of it? NOT MONEY. That's right. Since we're
  133. making the game for free, no one's gonna get any cash. BUT, YOU GET
  134. RECOGNITION. Game companies are constantly looking, almost above
  135. all other factors, for people who've been involved on successful,
  136. completed projects. This project can get you that. It also shows
  137. you are a creative person will to take risks. In other words, be
  138. involved on this project could be a great way to break into the
  139. game industry.
  140.  
  141. Moreover, you get to be involved in a cutting edge production on
  142. the sole condition that you're interested. Ya just can't find that
  143. many other places.
  144. -----------------------------------------------------------------
  145. -------
  146.  
  147. 1.6 Misc:
  148.  
  149. There is a discussion channel on us.undernet.org called #raydeal.
  150. Either me (handle theweirdo) or Gene (tspectre) are almost always
  151. there.
  152.  
  153. 1.7 The Future:
  154. ---------------
  155. Raydeal: The Vision. (or, "what other neat and impossible to code
  156. things can I think of this afternoon?") by Gene Buckle
  157.  
  158. Imagine a game that had all the strategic elements of boardgames
  159. like Risk or computer games like Empire, with all the in-your-face
  160. death and destruction that Doom offers.  Sound good?  That's what
  161. I'd like to see this game evolve into.
  162.  
  163. The game should not be constrained to only person to person ground
  164. combat.  We can add vehichles!  Just think of the fun you could
  165. have in a tank battle.  Tanks would be great, but why not add small
  166. teams with mortars or howitzers?  From there, things like mine
  167. fields could be added to add just the right amount of terror to the
  168. ground pounders attacking your base!  The vehicle concept can be
  169. taken another step further by adding small helicopters and
  170. airplanes.  Now not only does Johnny Grunt have to worry about
  171. tanks, trucks and minefields, but he as to look up as well to make
  172. sure he doesn't get strafed by that crazy bastard flying the
  173. airplane at 250 feet off the deck.  Helicopters could be used to
  174. insert multi-player teams behind enemy lines for a little behind
  175. the scenes special forces work.  From this, we can add all sorts of
  176. nasty little goodies.  Things like LAAW and TOW missle launchers,
  177. pillboxes with fixed guns (you can aim it, but you can't take it
  178. with you), pit traps, etc.
  179.  
  180. Another expansion should be some kind of economic scale.  This
  181. would entail team leaders having to buy (or steal!) equipment for
  182. their team. Assets should not be inexhaustable either.  If a player
  183. decides to waste a few dozen planes in suicide missions against
  184. another players' fortress, those planes are *gone* until his
  185. "factories" can build new planes, or he can buy or steal
  186. replacements.  This would add a bit more "realism" to the game as
  187. it's played out.  Players could respawn immediately if killed, but
  188. if they were driving a tank at the time, they've got to either
  189. obtain another one from the motor pool, or steal one from another
  190. unsuspecting player.
  191.  
  192. Mercenary forces can also be used for those players that don't want
  193. to align themselves with a particular team.  This opens up the
  194. possibilty of groups of mercenary players attacking resupply
  195. convoys and reselling the goods to the highest bidder.  A black
  196. market of sorts.  This would also add a nice touch of realism to
  197. the game.
  198.  
  199. There are limitless possibilities for the game as it stands, and if
  200. we work together on this, a lot of it can become a reality!
  201.  
  202. As you can see, my particular vision for this great 3d game engine
  203. that Matt has designed is quite vast.  Some of what I'd like to see
  204. will never come to pass and some things that I've never thought of
  205. before will be added.  The end result will be the same however.  A
  206. game that can be played and enjoyed by *anyone* reguardless of how
  207. quick their reflexes are or how smart they are.
  208.  
  209. By hosting the game on the internet, it will attract a lot of
  210. players from many diverse backgrounds, which unto itself will add
  211. to the entertainment of the whole.
  212.  
  213.  
  214. ----------------------------
  215. And now, Matt will attempt to bring us all back to reality.
  216. ----------------------------
  217.  
  218. Section 2: The Code
  219. ----------------------------
  220.  
  221. 2.1: Programming Overview And Notes
  222.  
  223. So far this is pretty brief. You'll have to make due till a more in
  224. depth version comes out.
  225.  
  226. The following are notes to the reviewing programmer.
  227. This program is spread out into several modules, many of which are
  228. themselves several files large. In general, for source code names
  229. which are not self-explanatory:
  230. a file prefix means it has to do with world file i/o
  231. a ray prefix either has to do with rendering or is from an
  232. older time when all files were ray prefixed
  233. a scr prefix means it has to do with screen management
  234. an spr prefix means it has to do with sprites/objects
  235. a vox prefix means it has to do with mountain rendering
  236.  
  237. Many of the sources are commented, but a few are not. In general,
  238. its not at all cryptic code. I've tried to adhere to the general
  239. philosophies of structured programming.
  240.  
  241. Important files:
  242.  
  243. gamerun.cpp - overall managing file. Runs almost everything
  244. dosrun.cpp - actual location of main() in DOS version. Just turns
  245. control over to gamerun.cpp
  246. rayinit.cpp - starts up and shuts down most system independent
  247. stuff
  248. raycast.cpp + bsptree.cpp - make up the meat of the overall
  249. renderer
  250. sprrend.cpp - the sprite renderer
  251. voxrend.cpp - c portion of mountain renderer
  252. filemain.cpp - overall managing file for world file i/o
  253. player.cpp - file that controls the player
  254. ray.h - info given to almost all files
  255. globals.h - global variables (I used to use globals, and now don't,
  256. but I still have relics)
  257. rayrend.h - h file for renderer
  258. rayfile.h - h file for world file i/o
  259. voxel.h - h file for mountain internal files
  260. voxinter.h - h for for mountain external files that want to use
  261. mountains
  262. sprutils.h + rayspr.h + rayspr.h - h files for sprites 
  263.  
  264. Command-line options:
  265.  
  266. -noshade turns off mountain shading
  267. -fastvox makes mountains render faster but not as nicely 
  268. (does not effect shading)
  269.  
  270. I haven't tried these in a long time, so I don't know if they work:
  271. -file uses alternate world file (will actually load DOOM wads too)
  272. -ftex use alternate world for floor textures
  273. -wtex same but for walls
  274.  
  275. A few idiosyncracies:
  276.  
  277. mix of the terms sprite and object- Technically, a sprite refers to
  278. a specific type of object, on that rendered as a moving bitmap.
  279. However, in the program the terms are interchanged without concern
  280. for specific definition. When sprite is used, it sometimes refers
  281. specifically to the rendering of an object
  282.  
  283. #ifdef OS_ lines
  284. These refer to operating system dependent portions of the code.
  285. A windows port was actually written for the project, but
  286. unfortunately other aspects of the project to priority before I
  287. could debug the WINDOWS version.
  288.  
  289. However, it actually compiled to windows at the time and ran,
  290. albeit in a slightly screwed up fashion(sp?) (the color palette was
  291. messed up). At this point, it probably will not compile cleanly to
  292. Windows, though finishing the port would require only a day or two
  293. for an experienced Windows programmer. (When I wrote the port, it
  294. was the first Win program I'd ever written).
  295.  
  296. code for objects & function pointers associated with them- The
  297. object model in the program is pretty neat. Rather than defining
  298. the object types at compile time, object types are run-time defined
  299. in the world file. Orchestrating this is not easy, and sometimes it
  300. makes object code overly complex. However, it is interesting to
  301. note that you could now, for example, put the camera in eye of an
  302. enemy, or change one enemies pictures to change him form a human to
  303. a monster. You should also note that some of the later object code
  304. was written very close to the time a prototype was needed, and is
  305. as a result somewhat cryptic and inflexible.
  306.  
  307. the asm files
  308. sliver.asm- code for inner loop of rendering walls & floors
  309. voxrow.asm- one set of code for inner loop of mountains (partially
  310. shaded)
  311. voxrowf.asm- secode set of mountain code (no shading)
  312. vrsmooth.asm- final set of mountain code (full shading). This the
  313. one that is almost universally used
  314.  
  315. -----------------------------------------------------------------
  316. ---------------------
  317. 2.2: Data file layouts
  318.  
  319.      A brief explanation of file structures- 
  320.  
  321.      The only major native file structure to the engine is the .dat
  322. file. It is very similar to a WAD file used in DOOM and its
  323. succesors. The file begins with a header w/ stucture:
  324.  
  325. typedef struct WFHEADER {
  326.    char header[8];
  327.    long dir_entries;
  328.    long dir_location;
  329.    } WFHeader;
  330.  
  331. Header is a name, whose first letter signifies if this is a binary
  332. ('B') or text file ('T'). Currently, all created files have been
  333. text.
  334.  
  335. dir_entries is the number of entrys in the directory, or list of
  336. resources in the file. dir_location is the start of the directory.
  337. It usually comes at the end of the file.
  338.  
  339. This list is made up of dir_entries number of info packets with
  340. this structure:
  341.  
  342. typedef struct DIR_ENTRY {
  343.    char name[8];
  344.    long start;
  345.    long length;
  346.    } dir_entry;
  347.  
  348. name is the name of the resource,  start is location from the start
  349. of the file of this resource, and length is the number of items of
  350. this particular resource that this entry has.
  351.  
  352. For more information on individual resources, and the file
  353. structure in general, read rayfile.h, and also the .cpp files w/
  354. the file prefix.
  355.  
  356. -----------------------------------------------------------------
  357. -----------------------
  358. 2.3: Current known bugs
  359.     1. A mysterious bug plague's the sprite renderer. It is clear
  360. that when trees, the most common sprite, is turned off, it rarely
  361. crashes. This is a critical, program crashing bug
  362.     2. Object and wall collision algorityms are sloppy.
  363. Particularly wall collision. The cause objects to collide earlier
  364. than they should, which in some cases causes objects to appear to
  365. mysteriously dissapear. This should be rewritten or corrected as it
  366. hampers playability.
  367.    3. The is a bug in the BSP generator (Binary Space Tree),
  368. although this has no obvious effects when running the program, it
  369. causes the current Win version to crash on startup, and is known to
  370. crash the program under a debugger.
  371.    4. There may be more bugs in the renderer. These are most likely
  372. non-fatal, but must be corrected nonetheless
  373.    5. This is not an adequate list. I'll be the first to admit the
  374. program is way too buggy.
  375.  
  376. -----------------------------------------------------------------
  377. ----------------------
  378. 2.4: Things needed to finalize game engine.
  379.  
  380.      The game engine itself is fairly complete. Various player
  381. movements need to be worked out, such as stafing, and control in
  382. general is not that well worked out.
  383.  
  384. Section 3: The History
  385. -----------------------------
  386.  
  387. 3.1: A brief history of raydeal
  388.  
  389. Raydeal begins in when I'm in 11th grade. I code a DOOM engine and
  390. a voxel engine concurrently. I have the initial game idea of BOLO
  391. with a DOOM interface. Josh Glazer is initially involved, and codes
  392. a MAC port, and an editor, which never works. He eventually loses
  393. interest, sorta.
  394.  
  395. At the end of 11th grade, I get hired by Cortina Entertainment, who
  396. wants to make a game out of my work. I take the program all the way
  397. to a prototype stage, almost finishing by the end of summer (w/
  398. actual completion by Sept/Oct.).
  399.  
  400. It then sits on the HD gathering dust for about 6 months, while
  401. Cortina "evaluates" it. I've never heard from them, though they
  402. claim to still be doing the project.
  403.  
  404. Say what???? You mean this is 6 month old technology???? Yes, a
  405. fairly unintelligent Hollywood game company didn't realize the
  406. potential of the technology someone was offering them, and the game
  407. sat there for six months.
  408.  
  409. I eventually post a homepage, in which I decide to publish the
  410. entire source code. Why? Primarily because I 've learned that in an
  411. insatiable quest to make money, I let the technology get slightly
  412. old. I could have given a head start to amateur coders around the
  413. world.
  414.  
  415. Various people, particularly Gene, express interest in continuing
  416. the project. With no corporate beuracracy, no funding, no money to
  417. make, and just vision and a desire to make a damn cool game, we get
  418. going again.
  419.  
  420.  
  421. -----------------------------------------------------------------
  422. ---------------------
  423. 3.2: A brief history of the FAQ
  424.  
  425. 1.0 Matt scribles something down in WordPad
  426. 1.01 Gene structures the FAQ, and adds his vision
  427. 1.02 Matt fills in some sections for gene, and adds history.
  428. 1.03 Matt makes corrections, and the FAQ is ready for posting